package Gestores.DtoObjects;

import Gestores.DaoInterfaces.CuotaDAO;
import Gestores.DataBaseLink;
import Gestores.Entidades.EntidadAfiliado;
import Gestores.Entidades.EntidadCuota;
import Gestores.NucleoBaseDatos;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

public class CuotaDTO implements CuotaDAO {
    
    private DataBaseLink conn;
    public CuotaDTO(){
        conn=NucleoBaseDatos.getInstance();
    
    }
   

    @Override
    public void insertar(Object objeto) throws Exception {
        EntidadCuota entidad=(EntidadCuota)objeto;
        String comando="call InsertarCuota("+String.valueOf(entidad.getMes())+","+String.valueOf(entidad.getAnho())+");";
        conn.executeSql(comando);
    }

    @Override
    public void actualizar(Object primaryKey,Object objeto) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public void eliminacionLogica(Object objeto) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public void eliminacionFisica(Object objeto) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public ArrayList<Object> listarTabla() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public ArrayList<Object> buscarPorMes(int m) throws Exception {
       String comando="call BuscarCuotaMes("+String.valueOf(m)+");";
       ResultSet resultado=conn.executeSql(comando);
       return devolverListaCargada(resultado);
    }
    
     private ArrayList<Object> devolverListaCargada(ResultSet resultado) throws SQLException {
        ArrayList<Object> lista = new ArrayList<Object>();
        while (resultado.next()) {
            EntidadCuota eCuota = new EntidadCuota(resultado.getInt(1),
                    resultado.getInt(2)
                    );
            lista.add(eCuota);
        }
        return lista;
    }

    @Override
    public ArrayList<Object> buscarPorAnho(int a) throws Exception {
         String comando="call BuscarCuotaAnho("+String.valueOf(a)+");";
       ResultSet resultado=conn.executeSql(comando);
       return devolverListaCargada(resultado);
    }

    @Override
    public ArrayList<Object> buscarPorMesAnho(int m, int a) throws Exception {
        String comando="call BuscarCuotaMesAnho("+String.valueOf(m)+","+String.valueOf(a)+");";
       ResultSet resultado=conn.executeSql(comando);
       return devolverListaCargada(resultado);
    }
}
